/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hps.model;

import java.io.*;
import java.util.ArrayList;

/**
 *
 * @author $Author: NIKE3500 $
 * @version $Revision: 94 $
 * @date $Date: 2013-01-22 21:08:20 +0000 (Tue, 22 Jan 2013) $
 */
public class Statistic
{

    private StringBuffer sb = new StringBuffer();
    private int escapedCount = 0;
    private int diedCount = 0;
    private int pedsRemaining;

    public Statistic(int xDim, int yDim, ArrayList<Pedestrian> pedestrians)
    {
        xDim = (int) (xDim / 0.4);
        yDim = (int) (yDim / 0.4);
        sb.append(String.format("Die Raumgröße beträgt %.1f x %.1f Meter.\n", xDim * 0.4, yDim * 0.4));
        pedsRemaining = pedestrians.size();
    }

    public void pedestrianDied(Pedestrian p, int tick)
    {
        if (pedsRemaining > 0)
        {
            pedsRemaining--;
            diedCount++;
            sb.append("Tick " + tick + ": Fußgänger ist bei " + p.getPos() + " gestorben.\n");
        }
        else
        {
            throw new IllegalStateException("Mehr Pedestrians gestorben als vorhanden");
        }
    }

    public void pedestrianExit(Pedestrian p, int tick)
    {
        if (pedsRemaining > 0)
        {
            pedsRemaining--;
            escapedCount++;
            sb.append("Tick " + tick + ": Fußgänger ist bei " + p.getPos() + " entkommen.\n");
        }
        else
        {
            throw new IllegalStateException("Mehr Pedestrians gestorben als vorhanden");
        }
    }

    public void writeToFile(String path) throws IOException
    {
        sb.append("Die Simulation wurde abgeschlossen.\nEs haben ");
        sb.append(escapedCount).append(" Menschen überlebt.\n");
        sb.append(diedCount).append(" Menschen sind gestorben.\n");
        sb.append(pedsRemaining).append(" Menschen sind verschollen.");
        FileWriter fw = new FileWriter(path);
        fw.write(sb.toString());
        fw.close();
    }
}
